<#include "/@inc/uiMacros.ftl">
<#include "/@inc/funcMacros.ftl">
<#include "/@inc/copyright.txt">
<#assign className = TriaGram + Prefix + LateType + "Dlg">
<#assign intfName = TriaGram + "I" + Prefix + LateType>
<#assign baseName = TriaGram + Prefix + LateType>
<@pp.renameOutputFile name=className+".h">
</@pp.renameOutputFile>
//==============================================================================
//
// ${className}.h
// The dialog: ${className}
//
//===============================================================================
//  ${Month} ${Year}  Creation: Code generated by the CAA wizard  ${Author}
//===============================================================================
#ifndef ${className}_H
#define ${className}_H

<@UI_ELEMENTS_DATA_TYPES Attributes  />

#include "CATDlgDialog.h"
#include "CATDlgInclude.h"
#include "CATICkeParm.h"

class CATICkeParm_var ;
class ${intfName} ;
class CATICkeParm;
class ${TriaGram}IUtlDlgList ;
//----------------------------------------------------------------------

/**
 * Dialog for ${LateType} Feature.
 */
class ${className}: public CATDlgDialog
{
  DeclareResource(${className},CATDlgDialog) ;

  public :

    // Constructor
    // ------------
    // Constructs a dialog box whose the style is:
    ${className}();
    virtual ~${className}();

    // Build
    // ------
    // Constructs the dialog objects inside the dialog box
    //
    void Build(${intfName} * ip${LateType});

<#-- Return all NON-PARAM string, double, boolean and int data types -->
<#list Attributes as attrib>
<#switch attrib.type >
<#case "tk_boolean"><#t>
<#case "tk_integer"><#t>
<#case "tk_double"><#t>
<#case "tk_string"><#t>
    <@ADD_GET_FUNC_DECL_COMMON attr=attrib ftype =";"/>
    <@ADD_SET_FUNC_DECL_COMMON attr=attrib ftype =";"/>
<#break>
</#switch>
</#list>

<#-- Return the UI ELements -->
<#list Attributes as attrib>
<#list uiElements as uiElem> <#if uiElem.id == attrib.name> <#assign x = uiElem> <#break></#if></#list>
<#switch attrib.UI>
<#case "">
<#break>
<#case "List">
<#case "BiList">
<#case "PolyList">
    ${x.dlg} * Get${attrib.name}Frame()   const ;
    <#break>
<#default >
    ${x.dlg} * Get${x.name}()   const ;
<#break>
</#switch>
</#list>

  private :

    // Copy constructor, not implemented
    // Set as private to prevent from compiler automatic creation as public.
    ${className}(const ${className} &iObjectToCopy);

    /**
    * Creates a parameter frame for given parameter.
    * @param    iParent         The parent.
    * @param    iName         Name of the created frame.
    * @param    ispParam        The parameter.
    * @return   null if it fails, else created frame for CATICkeParam.
    */
	CATDlgFrame *	CreateParamFrame(const CATDialog *iParent,
									 const CATString &iName,
									 const CATICkeParm_var &ispParam) ;

	void SetInitialValues(${intfName} * ip${LateType}) ;

//CAA2 WIZARD WIDGET DECLARATION SECTION
<@DECLARE_UI_VARS uiElements />
//END CAA2 WIZARD WIDGET DECLARATION SECTION

<#list Attributes as attrib>
<#switch attrib.UI>
<#case "Param">
 CATICkeParm_var			_spParm${attrib.name};
<#break>
</#switch>
</#list>

};
#endif

